ci: add Sigstore signing and signed GitHub release artifacts for PyPI releases#2054
Conversation
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
Up to standards ✅🟢 Issues
|
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #2054 +/- ##
=======================================
Coverage 93.70% 93.70%
=======================================
Files 145 145
Lines 9452 9452
=======================================
Hits 8857 8857
Misses 595 595 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Enhances the PyPI publish workflow to meet OpenSSF Scorecard “Signed-Releases” expectations by adding Sigstore keyless signing and uploading signed artifacts to GitHub Releases, and updates release documentation/changelog accordingly.
Changes:
- Split the publish workflow into separate build and publish/sign jobs, adding Sigstore signing + verification and GitHub Release asset uploads.
- Updated
RELEASE.mdto reflect the tag-triggered publish/sign/release process. - Added a changelog entry documenting the signed release assets addition.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
RELEASE.md |
Updates release steps to reference tag-triggered publishing, signing, and GitHub Release artifact verification. |
CHANGELOG.md |
Adds an Unreleased entry noting Sigstore-signed release assets for Scorecard provenance. |
.github/workflows/publish.yml |
Splits build vs. publish/sign, adds Sigstore signing+verification, and uploads artifacts (including .sigstore.json) to GitHub Releases. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughPublish workflow split into a Changes
Sequence Diagram(s)mermaid Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. 📋 Issue PlannerBuilt with CodeRabbit's Coding Plans for faster development and fewer bugs. View plan used: ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 4b737ddb-f140-40cf-ae6a-03070247463e
📒 Files selected for processing (3)
.github/workflows/publish.ymlCHANGELOG.mdRELEASE.md
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: eeb9c463-79cf-4511-86df-01ce3aaaa856
📒 Files selected for processing (1)
.github/workflows/publish.yml
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: fe4626a3-bcec-45eb-a188-0a7c47c5be19
📒 Files selected for processing (2)
.github/workflows/publish.ymlCHANGELOG.md
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
.github/workflows/publish.yml (1)
49-59:⚠️ Potential issue | 🟠 MajorAdd a tag-scoped concurrency guard to prevent duplicate or racing runs.
The
publish-and-signjob writes to PyPI and creates GitHub releases but lacks a concurrency block. Reruns or duplicate tag pushes could race and leave release state inconsistent.publish-and-sign: name: Publish and sign release artifacts needs: build + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: false runs-on: ubuntu-latest
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: f56c5e72-ddd6-42c7-98ad-1194b5a2713d
📒 Files selected for processing (1)
.github/workflows/publish.yml
exploreriii
left a comment
There was a problem hiding this comment.
Nice going! Last tidy
…ease notes Signed-off-by: Ntege Daniel <danientege785@gmail.com>
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
|
is this ready for review again please? if so, please also resolve some of the prior comments :) |
…ease notes Signed-off-by: Ntege Daniel <danientege785@gmail.com>
addressed |
|
thanks please makr ready for review |
…s set Signed-off-by: Ntege Daniel <danientege785@gmail.com>
exploreriii
left a comment
There was a problem hiding this comment.
Rebase please @danielmarv
… releases (hiero-ledger#2054) Signed-off-by: Daniel Ntege <danientege785@gmail.com> Signed-off-by: Ntege Daniel <danientege785@gmail.com>
… releases (hiero-ledger#2054) Signed-off-by: Daniel Ntege <danientege785@gmail.com> Signed-off-by: Ntege Daniel <danientege785@gmail.com>
… releases (hiero-ledger#2054) Signed-off-by: Daniel Ntege <danientege785@gmail.com> Signed-off-by: Ntege Daniel <danientege785@gmail.com>
Description:
This PR enhances the release workflow to comply with OpenSSF Scorecard “Signed-Releases” requirements by adding cryptographic signing for release artifacts and attaching them to GitHub Releases.
Changes
id-token).sigstore.json) to GitHub Releasespypa/gh-action-pypi-publishWhy
OpenSSF Scorecard’s Signed-Releases check requires that repositories provide cryptographically signed release artifacts in GitHub Releases. Previously, releases were published to PyPI but not signed or attached as verified assets in the repository.
This change:
Security
id-token: writeonly in the publish jobcontents: readglobally,contents: writeonly where needed)Testing
v*.*.*)v0.0.0-rc.1)dist/*.whldist/*.tar.gzdist/*.sigstore.jsonRelated issue(s):
Notes for reviewer:
Checklist